package com.aaa.system.controller.api;

import com.aaa.system.aop.annotation.Log;
import com.aaa.system.service.IDeptService;
import com.aaa.entity.Dept;
import com.aaa.system.vo.DeptVo;
import com.aaa.vo.Result;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.ArrayList;
import java.util.List;

/**
 * 响应到前端的controller类
 */
@RestController
@RequestMapping("system/api/dept")
public class ApiDeptController {

    @Autowired
    private IDeptService deptService;


    /**
     * 用户页面的部门列表模糊查询
     * @return
     */
    @GetMapping("/list")
    public Result<List<Dept>> getInfo(){
        return deptService.findAll();
    }


    /**
     * 分页/动态查询科室管理表格数据
     * @param current  当前页码
     * @param size 每页条数
     * @param deptVo 模糊查询条件对象
     * @return  分页科室信息
     */
    @PostMapping("/selectAll/{current}/{size}")
    public Result<IPage<Dept>> selectAll(
            @PathVariable Integer current,
            @PathVariable Integer size,
            @RequestBody DeptVo deptVo
    ){
        return deptService.selectAll(current,size,deptVo);
    }

    /**
     * 添加或修改科室信息
     * @param dept 科室信息对象
     * @return 操作结果信息
     */
    @Log(title = "添加/修改科室信息",business_type = "1")
    @PostMapping("/saveOrUpdateDept")
    public Result<Boolean> insertDept(@RequestBody Dept dept){
        Result<Boolean> saveOrUpdateDept = deptService.saveOrUpdateDept(dept);
        return saveOrUpdateDept;
    }

    /**
     * 根据部门id批量删除科室
     * @param deptIds 部门id数组
     * @return 操作结果信息
     */
    @Log(title = "批量删除科室信息",business_type = "3")
    @PostMapping("/muldelDept")
    public Result<ArrayList<Long>> muldelDept(Long[] deptIds){
        return deptService.muldelDept(deptIds);
    }


    /**
     * 根据科室id删除科室
     * @param deptId 科室id
     * @return 操作结果信息
     */
    @Log(title = "删除科室信息",business_type = "3")
    @DeleteMapping("/delDept/{deptId}")
    public Result<Long[]> delDept(@PathVariable Long deptId){
        Result<Long[]> delDept = deptService.delDept(deptId);
        return delDept;
    }

}
